/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package controladores;


import java.util.List;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.ListModel;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.Listbox;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.zkoss.zul.Checkbox;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Textbox;
import renders.LegajosRender;

/**
 *
 * @author lcarou
 */
public class LegajosViewController extends GenericForwardComposer {
    
    Listbox legajoListBox;
    Textbox filtroApellido;
    Combobox seleccionCampo;
    Checkbox filtroContiene;
    
    @Override
    public void doAfterCompose (Component comp) throws Exception
    {
     super.doAfterCompose(comp);
     
     legajoListBox.setModel(getLegajosModel());
     legajoListBox.setItemRenderer(new LegajosRender());
    }
    
    public ListModel getLegajosModel()
    {
     List legajos;
     EntityManagerFactory emf;
     
     emf = Persistence.createEntityManagerFactory("ProyectoConarpesaPU");
             
     EntityManager em;
     
     em = emf.createEntityManager();
     
     javax.persistence.Query q = em.createQuery("SELECT c FROM LegLEGAJO AS c");
     legajos = q.getResultList();
     return new ListModelList(legajos);
    }    
    
    public void onChange$filtroApellido() {
        
        //Messagebox.show("Entramos a onChanged$filtroApellido", "Error", Messagebox.ABORT, Messagebox.ERROR);
        
        legajoListBox.setModel(getLegajosByApellido());
        legajoListBox.setItemRenderer(new LegajosRender());
    }
    
    public void onSelect$seleccionCampo() {
        
        //Messagebox.show("Entramos a onChanged$filtroApellido", "Error", Messagebox.ABORT, Messagebox.ERROR);
        
        legajoListBox.setModel(getLegajosByApellido());
        legajoListBox.setItemRenderer(new LegajosRender());
    }
    
    public void onCheck$filtroContiene() {

        legajoListBox.setModel(getLegajosByApellido());
        legajoListBox.setItemRenderer(new LegajosRender());
    }    
    
    public ListModel getLegajosByApellido() {
     List legajos;
     EntityManagerFactory emf;
     String seleccionCampoValue;
     String sql;
     String campoElegido;
     
     emf = Persistence.createEntityManagerFactory("ProyectoConarpesaPU");
             
     EntityManager em;
     
     em = emf.createEntityManager();
     
     seleccionCampoValue = seleccionCampo.getSelectedItem().getLabel();
     campoElegido = "apellido";
     
        switch (seleccionCampoValue) {
            case "campo legajo":
                campoElegido = "legajo";
                break;
            case "campo apellido":
                campoElegido = "apellido";
                break;
            case "campo nombre":
                campoElegido = "nombre";
                break;
        }

     sql = "SELECT c FROM LegLEGAJO AS c WHERE c." + campoElegido + " LIKE :valorFiltro ORDER BY c." + campoElegido + " ASC";
     
     javax.persistence.Query q = em.createQuery(sql);
     
     if (filtroContiene.isChecked())
         q.setParameter("valorFiltro", "%" + filtroApellido.getValue() + "%");     
     else    
         q.setParameter("valorFiltro", filtroApellido.getValue() + "%");          

     return new ListModelList(q.getResultList());
    }
 }
